____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
Mach-O
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
Mach-O, fΓΌr Mach Object, beschreibt das Standard-BinΓ€rformat ausfΓΌhrbarer Programme, Bibliotheken und von SpeicherauszΓΌgen unter vielen MACH-basierten UNIX-Betriebssystemen wie beispielsweise OPENSTEP (ursprΓΌnglich NeXTStep), FreeBSD oder macOS (ursprΓΌnglich unter dem Namen Mac OS X).
Es wurde ab 1985 an der Carnegie Mellon University, kurz CMU, fΓΌr das MACH-Betriebssystem entwickelt. GroΓe Verbreitung hat es vor allem unter NeXTStep und dessen Weiterentwicklung macOS und darauf basierenden Apple-Systemen, wie iOS und iPadOS. Mit Universal Binaries, unter NeXTStep Multi-Architecture Binaries, wurde das Format zudem um Multi-Prozessorarchitektur-FΓ€higkeit erweitert.
Contents
β’ Aufbau
β’ Header
β’ Siehe auch
β’ Weblinks
β’ Einzelnachweise
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Aufbau
Eine Mach-O-Datei besteht im Wesentlichen aus drei Teilen:cite-ref-1[1]
β’ Kopfinformationen, englisch header
β’ Magic
β’ diverse Flags
β’ Anzahl und GrΓΆΓe der Load commands
β’ Load commands
β’ Metadaten
β’ Offset-Addressen der Segmente
β’ Segmente, segments
β’ bis zu 255 Sektionen, sections
Header
struct mach_header_64 {
uint32_t magic; /* mach magic number identifier */
cpu_type_t cputype; /* cpu specifier */
cpu_subtype_t cpusubtype; /* machine specifier */
uint32_t filetype; /* type of file */
uint32_t ncmds; /* number of load commands */
uint32_t sizeofcmds; /* the size of all the load commands */
uint32_t flags; /* flags */
uint32_t reserved; /* reserved (64-Bit only) */
};
Ein Beispiel fΓΌr einen Mach-Header aus einer beliebigen Programmdatei:cite-ref-3[3]
| Offset (hex) | LΓ€nge (dec) | Inhalt | Beispiel |
|---|---|---|---|
| 00 | 4 | mach magic number identifier | 0xCFFAEDFE β MH_CIGAM_64 |
| 04 | 4 | CPU type | 0x01000007 β CPU_TYPE_X86_64 = CPU_TYPE_I386 / CPU_ARCH_ABI64 |
| 08 | 4 | CPU subtype, machine specifier | 0x80000003 β CPU_SUBTYPE_X86_ALL / CPU_SUBTYPE_LIB64 |
| 12 | 4 | Dateityp | 0x00000002 β MH_EXECUTE |
| 16 | 4 | Anzahl der load commands | 0x00000010 |
| 20 | 4 | GrΓΆΓe aller load commands | 0x00000510 bytes |
| 24 | 4 | Flags | 0x00200085 β u. a. MH_DYLDLINK / MH_NOUNDEFS |
| 28 | 4 | reserviert (fehlt bei 32-Bit-Mach-O) | 0x00000000 |
Siehe auch
Weblinks
β’ Harry Moulton: Mach-O File Format: Introduction. 3. Januar 2020; abgerufen am 22. November 2021 (englisch).
Einzelnachweise
cite-note-11. β William Woodruff: Mach-O Internals. (PDF; 307 KB) 10. Februar 2016, S. 10; abgerufen am 14. Juli 2020 (englisch).
cite-note-22. β Apple, Inc.: XNU Kernel Source. Abgerufen am 22. November 2021 (englisch).
cite-note-33. β https://stackoverflow.com/questions/27669766/how-to-read-mach-o-header-from-object-file